package muhnes.sizoo.dal;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import org.hibernate.Session;

/**
 * Clase que contiene las declaraciones de los metodos de forma 
 * general de la cual implementan todas las clases
 * @author  Nelson Chicas
 */
public interface IDataAccessObject< T, ID extends Serializable > {
    
    public void guardar ( T entidad );
    public void guardarColeccion ( Collection< T > entidades );
    public void actualizar ( T entidad );
    public void actualizarColeccion ( Collection< T > entidades );
    public void eliminar ( T entidad );
    public void eliminarColeccion ( Collection< T > entidades );
    public void eliminarPorId ( ID id );
    public T buscarPorId ( ID id );
    public List< T > buscarTodos ();
    public void revertirCambios ( T entidad );
    public T removerProxy( T entidad );
    public Session obtenerSesion();
    public boolean verificarUnicidad( T entidad );
    public boolean verificarDependencia( T entidad );
    
}
